1.1Linux基础命令

1.1 Linux基础命令

一、什么是Linux命令

输入一串字符命令,由Shell将这条命令“翻译”为系统内核能够懂的“语言”,然后系统内核便根据这条命令去执行相关操作

什么是Shell?

  • Linux系统中运行的一种特殊程序

  • 在用户和内核之间充当“翻译官”

    • 用户登录Linux系统时,自动加载一个Shell程序
  • Bash是Linux系统中默认使用的Shell程序
    文件位于/bin/bash目录下



  • 接收用户输入的指令
  • 解释命令
  • 传递给系统内核执行

二、命令提示符

1
[root@localhost	~]#

这是Linux系统的命令提示符,具体含义如下

  • []:这是提示符的分隔符号,没有特殊含义,方便查看。
  • root:显示当前登录的用户名。
  • @:分隔符号,没有特殊含义。
  • localhost:当前系统的简写主机名(通过hostname命令查看完整主机名)。
  • ~:代表用户当前所在目录,此例中用户当前所在的目录是家(home)目录。
  • #:命令提示符,Linux用这个符号标识登录的用户权限等级。超级用户提示符,普通用户提示符$。

什么是家(home)目录?

家目录又称主目录,用户登录后,要有一个初始登录位置,这个初始登录位置就称为用户的家目录。

  • 超级用户的家目录:/root
  • 普通用户的家目录:/home/用户名
  • 用户在自己的家目录中拥有完整权限

三、Linux的常用命令

常用关机命令

1、poweroff​ 立刻关机 2、halt​ 立刻关机(需要root权限)

init命令

1、init 0:关机

2、init 3:纯文本模式

3、init 5:图形模式

4、init 6:重新启动

常用重启命令

reboot​ 立刻重启

拓展命令

Shutdown [选项] 时间​ 计划关机

选项 含义
-c 取消前一个关机命令
-h 关机
-r 重启

示例:

1
2
3
4
5
6
7
[root@localhost	~]# shutdown -h now		#立刻关机
[root@localhost ~]# shutdown -h 10 #十分钟后关机
[root@localhost ~]# shutdown -h 11:11 #11:11关机

[root@localhost ~]# shutdown -r now #立刻重启
[root@localhost ~]# shutdown -r 10 #十分钟后关机
[root@localhost ~]# shutdown -r 11:11 #11:11重启

切换路径命令

cd是Change Directory的缩写,用来切换工作目录。

基本格式如下:

[root@localhost ~]# cd [相对路径或绝对路径]

除此之外,cd命令后面可能跟一些特殊符号,表达含义如下:

特殊符号 作用
~ 代表当前登录用户的主目录
~ 用户名 表示切换至指定用户的主目录
- 代表上次所在目录
. 代表当前目录(不会有路径变化)
.. 代表上级目录

打印工作目录命令

pwd是Print Working Directory的缩写,用来在目录上显示当前目录的绝对路径。

基本格式如下:

[root@localhost ~]# pwd

显示目录内容命令

ls是list的缩写是最常见的目录操作命令,其主要功能是显示当前目录下的内容。

基本格式如下:

[root@localhost ~]# ls [选项] 目录名

具体选项有:-a、-A、-d、-f等。

常用命令:

1、ls -l

2、ls -lR

3、ls -lh

文件读写操作

新建文件夹命令

mkdir是make directories的缩写,用户创建新目录,此命令所有用户都可使用。

基本格式如下:

[root@localhost ~]# mkdir [选项] 目录名

具体选项有:

选项 含义
-p 递归创建所有目录
-m 选项自定义目录权限

删除文件夹命令

rmdir是remove empty directories的缩写,命令用于删除空目录,此命令所有用户都可使用。

基本格式如下:

[root@localhost ~]# rmdir [选项] 目录名

具体选项有:

选项 含义
-p 递归删除所有空目录

因rmdir只能删除空目录,所以此命令不经常使用

新建文件命令

touch命令是用于用户创建新文件,并且此命令可以修改文件的时间参数(当文件存在时)。

Linux系统中,每个文件主要拥有3个时间参数(通过stat命令进行查看 ),分别是文件的访问时间、数据修改时间以及状态修改时间:

  • 访问时间(Access Time,简称atime):只要文件的内容被读取,访问时间就会更新。
  • 数据修改时间(Modify Time,简称mtime):当文件的内容数据发生改变,数据修改时间就会跟着相应改变。
  • 状态修改时间(Change Time,简称ctime):当文件的状态发生变化,就会相应改变这个时间。

基本格式如下:

[root@localhost ~]# touch [选项] 文件名

具体选项有:

选项 含义
-a 只修改文件的访问时间
-c 仅修改文件的时间参数(3个时间参数都改变),如果文件不存在,则不信建立文件
-d 选项 含义 -a 只修改文件的访问时间 -c 仅修改文件的时间参数(3个时间参数都改变),如果文件不存在,则不信建立文件 -d -m -t
-m 只修改文件的数据修改时间
-t 后面可跟欲修订时间,书写格式:YYMMDDhhmm

删除命令

rm命令是remove的缩写,用于用户永久性的删除文件或者目录,在使用rm命令删除文件或目录时,系统不会产生任何提示信息。

基本格式如下:

[root@localhost ~]# rm [选项] 文件或目录

具体选项有:

选项 含义
-f 强制删除,和-i选项相反,使用-f系统不再询问,直接删除目标
-i 在删除文件或者目录前,系统会给出提示信息,防止用户误删
-r 递归删除,主要用户删除目录,可删除指定目录及包含所有内容,包括子目录和文件

注意:rm命令是一个具有破坏性的命令,因为rm命令会永久性的删除文件或目录,这就意味着,如果没有对文件或目录进行备份,一旦使用rm命令将其删除,将无法恢复,除非依赖第三方的数据恢复工具。

复制命令

cp命令是copy的缩写,用于文件或目录的拷贝。

基本格式如下:

[root@localhost ~]# cp [选项] 源文件 目标文件

具体格式如下:

选项 含义
-a 相当于-d、-p、-r选项的集合
-d 如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软连接
-i 询问,如果目标文件已经存在,则会询问是否覆盖
-l 把目标文件建立为源文件的硬链接文件,而不是复制源文件
-s 把目标文件建立为源文件的软链接文件,而不是复制源文件
-p 复制后的目标文件保留源文件的属性(包括所有者、所属组、权限和时间)
-r 递归复制,用于复制目录
-u 若目标文件比源文件有差异,则使用该选项可以更新目标文件,此选项可用于对文件的升级和备份

移动命令

mv命令是move的缩写,用于目录或文件的移动,在移动中可以对文件或者目录进行重命名。

基本格式如下:

[root@localhost ~]# mv [选项] 源文件 目标文件

具体选项有:

选项 含义
-f 强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖
-i 交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项)
-n 如果目标文件已经存在,则不会覆盖移动,而且不询问用户
-v 显示文件或目录的移动过程
-u 若目标文件已经存在,但两者相比,源文件更新,则会对目标文件进行升级

注意:同rm命令相似,mv命令也是一个具有破坏性的命令,如果使用不当,很可能给系统带来灾难性的后果。

显示文件内容命令

cat是concatenate(链接、连续)的简写,用来显示文本文件的内容(类似于DOS下的type命令),也可以把几个文件内容附加到另一个文件中,即连接合并文件。

基本格式如下:

1
2
[root@localhost	~]# mv [选项] 文件名
[root@localhost ~]# mv 文件1 文件2 > 文件3

具体选项有:

选项 含义
-a 相当于-vET选项的整合,用于列出所有隐藏符号
-E 列出每行结尾的回车符$
-n 对输出的所有行进行编号
-b 同-n不同,此选项表示只对非空行进行编号
-T 把Tab键^I显示出来
-V 列出特殊字符
-s 当遇到有连续2行以上的空白行时,就替换为1行的空白行

注意:cat命令适合查看不太大的文件。当然,在Linux中是可以使用其他的命令或方法来查看大文件的。


more命令是可以分页显示文本文件的内容,使用者可以逐页阅读文件中内容。

基本格式如下:

[root@localhost ~]# more [选项] 文件名

选项 含义
-f 计算行数时,以实际的行数,而不是自动换行过后的字数
-p 不以卷动的方式显示每一页,而是先清除屏幕后再显示内容
-c 跟-p选项相似,不同的是先显示内容再清除其他旧资料
-s 跟-p选项相似,不同的是先显示内容再清除其他旧资料
-u 不显示下引号(根据环境变量TERM指定的终端而有所不同)
+n 从第n行开始显示文件内容,n代表数字

More命令交互指令集功能表

交互指令 功能
h或? 显示more命令交互命令帮助
q或Q 退出more
v 在当前行启动一个编辑器
:f 显示当前文件的文件名和行号
!<命令>或:!<命令> 在子Shell中执行指定命令
回车键 向下移动一行
空格键 向下移动一页
Ctrl+l 刷新屏幕
= 显示当前行的行号
转到上一次搜索开始的地方
Ctrl+f 向下滚动一页
. 重复上次输入的命令
/字符串 搜索指定的字符串
d 向下移动半页
b 向上移动一页

head命令是显示指定文件前若干行的文件内容。

具体格式如下:

[root@localhost ~]#head [选项] 文件名

选项 含义
-n K 这里的K表示行数,该选项用来显示文件前K行的内容;如果使用”-K”作为参数,则表示除了文件最后K行外,显示剩余的全部内容
-c K 这里的K表示字节数,该选项用来显示文件前K个字节的内容;如果使用”-K”,则表示除了文件最后K字节的内容,显示剩余全部内容
-v 显示文件名

注意:如不设置显示的具体行数,则默认显示10行的文本数据。


tail命令正好和head相反,它用来查看文件末尾的数据。

基本格式如下:

[root@localhost ~]#tail [选项] 文件名

选项 含义
-n K 这里的K指的是行数,该选项表示输出最后K行,在此基础上,如果使用-n+K,则表示从文件的第K行开始输出
-c K 这里的K指的是字节数,该选项表示输出最后K字节的内容,在此基础上,使用-c+K则表示从文件的第K个字节开始输出
-f 输出文件变化后新增加的数据

注意:-f命令会显示文件的最后10行内容,而且光标不会退出命令,每隔一秒会检查一下文件是否增加新的内容,如果增加就追加到原来的输出结果后面并显示。

文件查找命令

find命令是在目录结构中搜索文件,并执行指定的操作。find命令提供相当多的查找条件,功能很强大。即使系统中含有网络文件系统,find命令在该文件系统中同样有效。在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间。

基本格式如下:

[root@localhost ~]#find [路径] [选项] [输出格式]

路径 含义
~ 表示$HOME目录
. 表示当前目录
/ 表示根目录
选项 含义
-name 按照名字查找
-perm 安装权限查找
-prune 不在当前指定的目录下查找
-user 文件(所)属主来查找
-group 文件所在(所)属组来查找
-nogroup 查找无有效所属组的文件
-nouser 查找无有效所属主的文件
-type 按照文件类型查找
输出格式 含义
print 表示将结果输出到标准输出
exec 对匹配的文件执行该参数所给出的shell命令。形式为command{} \\\\;
注意:{}和;之间有空格
ok 与exec作用相同,区别在于,在执行命令之前,都会给出提示,让用户确认是否执行

内容查找命令

grep命令时global regular expressions print的缩写,grep命令是用来在每一个文件或中(或特定输出上)搜索特定的模式,当使用grep时,包含指定字符模式的每一行内容,都会被打印(显示)到屏幕上,但是使用grep命令并不改变文件中的内容。

基本格式如下:

[root@localhost ~]#grep [选项] [模式] 文件名

注意:基本格式中的模式要么是字符(串),要么是正则表达式。

选项 含义
-c 仅列出文件中包含模式的行数
-i 忽略模式中的字母大小写
-l 列出带有匹配行的文件名
-n 在每一行的最前面列出行号
-v 列出没有匹配模式的行
-w 把表达式当做一个完整的单字符来搜寻,忽略那些部分匹配的行

注意:如果是搜索多个文件,grep命令的搜索结果只显示文件中发现匹配模式的文件名;而如果搜索单个文件,grep命令的结果将显示每一个包含匹配模式的行。

四、Linux命令行的辅助操作

快捷键:

Tab键:自动补齐

Ctrl+U:清空至行首

Ctrl+K:清空至行尾

Ctrl+L:清屏

Ctrl+C:中断命令执行

Ctrl+Z:后台挂起

Ctrl+D:退出Shell

五、Linux中打包和压缩

打包和压缩有什么区别:

  • 归档: 也称为打包,指的是一个文件或目录的集合,而这个集合被储存在一个文件中。归档文件没有经过压缩,因此,它占用的空间是其中所有文件和目录的总和。
  • 压缩: 是指利用算法将文件进行处理,已达到保留最大文件信息,而让文件体积变小的目的。其基本原理为,通过查找文件内的重复字节,建立一个相同字节的词典文件,并用一个代码表示。比如说,在压缩文件中,有不止一处出现了”Linux常用命令”,那么,在压缩文件时,这个词就会用一个代码表示并写入词典文件,这样就可以实现缩小文件体积的目的。

打包命令

tar命令是常用的归档(打包)命令,该命令可以将许多文件一起保存到一个单独的归档文件。不仅如此,该命令还可以从归档文件中还原所需文件,也就是打包的反过程,称为解(压)打包。使用tar命令归档的包通常称为tar包,tar包文件都是以”.tar”结尾。

基本格式如下:

[root@localhost ~]#tar [选项] 源文件或目录

[root@localhost ~]#tar [选项] 源文件或目录(打包)/压缩包(解压包)

选项 含义
-c 将多个文件或目录进行打包
-A 追加tar文件到归档文件
-f 包名 指定包的文件名或者指定解压的tar包的包名。包的拓展名是用来给管理员识别格式的,所以一定要正确指定拓展名。
-v 显示打包或解压包的具体过程
-x 对tar包做解压包操作
-t 只查看tar包中有哪些文件或目录,不对tar包做解压包操作
-C 目录 指定解压包位置

压缩命令

zip命令是常用的压缩命令。

基本格式如下:

[root@localhost ~]#zip [选项] 源文件或源目标列表

注意:zip压缩命令需要手工指定压缩之后的压缩包名,注意写清楚拓展名,以便解压缩时使用。

选项 含义
-r 递归压缩目录,及将制定目录下的所有文件以及子目录全部压缩
-m 将文件压缩之后,删除原始文件,相当于把文件移到压缩文件中
-v 显示详细的压缩过程信息
-q 在压缩的时候不显示命令的执行过程
-压缩级别 压缩级别是从1~9的数字,-1代表压缩速度更快,-9代表压缩效果更好
-u 更新压缩文件,即往压缩文件中添加新文件

解压缩命令

unzip命令可以查看和解压缩zip文件。

基本格式如下:

[root@localhost ~]#unzip [选项] 压缩包名

选项 含义
-d 目录名 将压缩文件解压到指定目录下
-n 解压时并不覆盖已经存在的文件
-o 解压时覆盖已经存在的文件,并且无需用户确认
-v 查看压缩文件的详细信息,包括压缩文件中包含的文件大小、文件名以及压缩比等,但并不做解压操作
-t 测试压缩文件有无损坏,但并不解压
-x 文件列表 解压文件,但不包含文件列表中指定的文件

六、Vi/Vim编辑器的使用

Vim编辑器的安装

在Linux系统中安装Vim编辑器

[root@localhost ~]#yum install vim

需要注意的是,此命令运行时,有时需要手动确认[y/n],如果需要省略手动输入”y”过程,可以用以下参数:

[root@localhost ~]#yum -y install vim

当安装完成,我们输入以下命令即可启动Vim文本编辑器

[root@localhost ~]#vim

命令模式

进入Vi/Vim便进入了命令模式。此状态下敲击键盘会被VIM识别为命令,而非输入字符。

以下是常用的几个命令:

命令/按键 作用
I 切换到输入模式,以输入字符
x 删除当前光标所在处的字符
: 切换到底线命令模式,以在最后一行输入命令

输入模式

在命令模式下按下i就进入输入模式。在输入模式中,可以使用以下按键:

按键 作用
字符按键及Shift组合 输入字符
ENTER 回车键,换行
BACKSPACE 退格键,删除光标前一个字符
DEL 删除键,删除光标后一个字符
方向键 在文本中移动光标
HOME/END 移动光标到行首/行尾
Page Up/Page Down 上/下翻页
Insert 切换光标为输入/替换模式
ESC 退出输入模式,切换到命令模式

底线命令模式

在命令模式下按:(英文冒号)就进入了底线命令模式。底线命令模式可以输入单个或多个字符命令。在底线模式中,基本命令有:

命令 作用
q 退出程序
w 保存文件
ESC(按键) 退出底线命令模式,切换到命令模式

如果想用Vim建立一个文件名为01.txt的文件,可以使用:

[root@localhost ~]#vim 01.txt

一般模式光标移动常用方法

按键 作用
[Ctrl]+[F] 屏幕『向下』移动一页,相当于[Page Down]按键(常用)
[Ctrl]+[B] 屏幕『向上』移动一页,相当于[Page Up]按键(常用)
0或者功能键[Home] 数字『0』:移动到这一行的最前面字符处(常用)
$或者功能键[End] 移动到这一行的最后面字符处(常用)
G 移动到这个档案的最后一行(常用)
gg 移动到这个档案的第一行(常用)
n n为数字。光标向下移动n行(常用)

一般模式下搜索替换指令说明

搜索替换命令 作用
/word 向光标之下寻找一个名称为word的字符串(常用)
?word 向光标之上寻找一个名称为word的字符串
n 这个n是英文按键。代表重复前一个搜寻的动作
N 这个N是英文按键。与n刚好相反,为『反向』进行前一个搜寻的动作
:n1,n2s/word1/word2/g n1与n2为数字。在第n1与n2行之间寻找word1这个字符串,并将该字符串取代为word2(常用)
:1,$s/word1/word2/g或:%s/word1/word2/g 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2(常用)
:1,$s/word1/word2/gc或:%s/word1/word2/gc 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2,且在取代前显示提示字符给用户确认(Confirm)是否需要取代(常用)

一般模式下删除、复制与粘贴的常用方法

删除、复制与粘贴方法 作用
x,X 在一行字当中,x为向后删除一个字符(相当于[del]按键),X为向前删除一个字符(相当于[Backspace]亦即是退格键)(常用)
dd 删除光标所在的那一整行(常用)
ndd n为数字。删除光标所在的向下n行,例如20dd则是删除 20行(常用)
yy 复制光标所在的那一行(常用)
nyy n为数字。复制光标所在向下n行,例如20yy则是复制20行(常用)
p, P p为将已复制的数据在光标下一行粘贴上,P则为粘贴在光标上一行
u 复原前一个动作(常用)
[Ctrl]+r 重做上一个动作(常用)
. 小数点,意思是重复前一个动作的意思。如果你想要重复删除、重复粘贴等等动作,按下小数点『.』就好了(常用)

一般模式切换到编辑模式的方法说明

进入输入和取代模式方法 作用
i,I 进入输入模式(Insert mode):i为『从目前光标所在处输入』,I为『在目前所在行的第一个非空格符处开始输入』(常用)
a,A 进入输入模式(Insert mode):a为『从目前光标所在的下一个字符处开始输入』,A为『从光标所在行的最后一个字符处开始输入』(常用)
o,O 进入输入模式(Insert mode):这是英文字母o的大小写。o为『在目前光标所在的下一行处输入新的一行』,O为『在目前光标所在处的上一行输入新的一行』(常用)
r,R 进入取代模式(Replace mode):r只会取代光标所在的那一个字符一次,R会一直取代光标所在的文字,直到按下ESC为止(常用)
[ESC] 退出编辑模式,回到一般模式中(常用)

一般模式切换到命令行模式的指令说明及Vim环境变量变更指令说明

命令行存储、离开指令 作用
:w 将编辑的数据写入硬盘存档中(常用)
:w! 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入成功,还是跟你对该档案的档案权限有关
:q 离开vi(常用)
:q! 若曾修改过档案,又不想储存,使用!为强制离开不储存档案
:wq 储存后离开,若为:wq!则为强制储存后离开(常用)
:n1,n2 w [filename] 将n1到n2的内容储存称filename这个档案
:!command 暂时离开vi到命令行模式下执行command的显示结果
Vim环境的变更 作用
:set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu 与set nu相反,为取消行号